特定のセキュリティグループが関連づけられているLambda関数をワンライナーで取得してみた
こんにちは。AWS事業本部トクヤマシュンです。
VPC Lambdaを運用していると、同一のセキュリティグループを複数のLambda関数に設定していることがあります。
特定のセキュリティグループがどのLambda関数に設定されているのか調査するとき、マネージメントコンソール経由だと少し面倒です。
そこで、今回は特定のセキュリティグループに関連づけられているLambda関数をワンライナーで取得する方法をご紹介します。
セキュリティグループのルール変更時の影響調査などにお役立てください。
いきなりワンライナー
VPC Lambdaが関連づけられているセキュリティグループが存在するリージョンのCloudShellで下記を実行します。
aws lambda list-functions --query "Functions[?not_null(VpcConfig.SecurityGroupIds)]|[?contains(VpcConfig.SecurityGroupIds,\`セキュリティグループID\`)].[FunctionName]" --output table
セキュリティグループIDは調査対象のものに適宜変更してください。
簡単な解説
今回のワンライナーではパイプを使って2つのqueryをつなげています。
前半部分は、Lambda関数がVpcConfig.SecurityGroupIds
という属性を持っているか判定しています。
VPC Lambdaでない関数はこの属性を持っていないため、後半のqueryでエラーが出るのを防ぐためにこの処理を入れています。
参考:VPC Lambdaの一覧を取得するために実行したlist-functionsの結果にVpcConfigが含まれない時と含まれるけど中身が空の時がある
後半部分ではLambda関数に設定されているセキュリティグループのIDに調査対象のものが含まれるかを判定し、該当する関数の名前を抜き出しています。
実行例
下記前提とします。
- 調査対象のセキュリティグループ
- ID: sg-0c13462137fe66d64
- リージョン: ap-northeast-1
- 調査対象のセキュリティグループが関連づけられているLambda関数名
- test-security-group-lambda1
- test-security-group-lambda2
ap-northeast-1リージョンのCloudShellにて次のワンライナーを実行します。
aws lambda list-functions --query "Functions[?not_null(VpcConfig.SecurityGroupIds)]|[?contains(VpcConfig.SecurityGroupIds,\`sg-0c13462137fe66d64\`)].[FunctionName]" --output table
結果は次のとおりです。
--------------------------------- | ListFunctions | +-------------------------------+ | test-security-group-lambda1 | | test-security-group-lambda2 | +-------------------------------+
調査対象のセキュリティグループが関連づけられているLambda関数名だけを抜き出すことができました。
以上でワンライナーの紹介は終了です。
趣味のスパイスカレー
私の趣味はスパイスカレー作りで、ブログに投稿していってます。
AWSには全然関係ありませんが、お付き合いいただけますと幸いです。
- 合わせ出汁の鶏キーマ
- ホタルイカとオクラのトマトマサラ
- ナスのモージュ
- ムング豆のダル
- ナスのモージュ
- キュウリとトマトのスパイスライタ
今回はスリランカカレーをベースとした2種あいがけ+副菜です。
意外かもしれないですが、オクラはカレーの具としては結構ポピュラーなんです。美味しいですよ。
ホタルイカももう終わりですね。ワタまで美味しい。季節を感じられるカレーが好きです◎
最後に
特定のセキュリティグループに関連づけられているLambda関数をワンライナーで取得する方法をご紹介しました。
セキュリティグループのルール変更時などにご利用ください。
今回のように少し複雑なAWS CLIのqueryオプションは、慣れてないとうまく書けず詰まってしまいますが、
使いこなせたらとても心強いツールです。
もっと仲良くなろうと思いました。
本ブログがどなたかのお役にたてば幸いです。